package com.fish.common.strategy;

import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * 文件上传策略接口
 */
public interface FileUploadStrategy {
    
    /**
     * 上传文件
     * 
     * @param file 文件
     * @param path 存储路径
     * @return 文件信息（包含url、path等）
     * @throws Exception 上传异常
     */
    Map<String, Object> upload(MultipartFile file, String path) throws Exception;
    
    /**
     * 删除文件
     * 
     * @param filePath 文件路径
     * @return 是否删除成功
     * @throws Exception 删除异常
     */
    boolean delete(String filePath) throws Exception;
    
    /**
     * 获取文件访问URL
     * 
     * @param filePath 文件路径
     * @return 文件访问URL
     * @throws Exception 异常
     */
    String getFileUrl(String filePath) throws Exception;
    
    /**
     * 获取策略类型
     * 
     * @return 策略类型（minio、local、oss等）
     */
    String getType();
}
